Serial Communication হলো একটি প্রক্রিয়া যেখানে Arduino বোর্ড এবং কম্পিউটারের মধ্যে ডেটা আদান-প্রদান করা হয়। এটি প্রোগ্রামিং এবং ডিবাগিং প্রক্রিয়াকে সহজতর করতে সহায়তা করে। Arduino তে সিরিয়াল কমিউনিকেশন সাধারণত USB কেবলের মাধ্যমে করা হয় এবং এটি Serial
লাইব্রেরি ব্যবহার করে সম্পন্ন করা হয়।
Serial Communication একটি ডেটা ট্রান্সমিশন পদ্ধতি যেখানে ডেটা একবারে এক বিট হিসেবে প্রেরণ করা হয়। এটি Arduino এবং অন্যান্য ডিভাইসের মধ্যে ডেটা আদান-প্রদানের জন্য ব্যবহৃত হয়।
সিরিয়াল কমিউনিকেশন শুরু করার জন্য Arduino প্রোগ্রামে Serial.begin()
ফাংশন ব্যবহার করা হয়। এটি বাউড রেট নির্ধারণ করে, যা প্রতি সেকেন্ডে ডেটা ট্রান্সমিশনের বিট সংখ্যা নির্ধারণ করে।
উদাহরণ:
void setup() {
Serial.begin(9600); // 9600 বাউড রেটে সিরিয়াল কমিউনিকেশন শুরু করা
}
void loop() {
Serial.println("Hello, Arduino!"); // সিরিয়াল মনিটরে বার্তা প্রিন্ট করা
delay(1000); // ১ সেকেন্ড অপেক্ষা
}
Arduino IDE-তে Serial Monitor একটি টুল যা ব্যবহারকারীদের Arduino থেকে পাঠানো ডেটা দেখতে সাহায্য করে এবং ব্যবহারকারীর ইনপুট বোর্ডে পাঠাতে পারে।
Serial Monitor খোলার ধাপ:
Ctrl + Shift + M
টিপুন।Serial লাইব্রেরিতে বিভিন্ন ফাংশন রয়েছে যেগুলো ব্যবহার করে সহজে ডেটা আদান-প্রদান করা যায়:
Serial.begin(speed)
: নির্দিষ্ট বাউড রেটে সিরিয়াল কমিউনিকেশন শুরু করে।Serial.print(data)
: ডেটা সিরিয়াল মনিটরে প্রিন্ট করে, নতুন লাইনে যায় না।Serial.println(data)
: ডেটা প্রিন্ট করে এবং নতুন লাইনে চলে যায়।Serial.read()
: ইনপুট ডেটা পড়ে, যা কম্পিউটার বা অন্য ডিভাইস থেকে Arduino-তে পাঠানো হয়।Serial.available()
: ইনপুট বাফারে কতটি বাইট পড়ার জন্য অপেক্ষমাণ আছে তা জানায়।Arduino তে পাঠানো এবং প্রাপ্ত ডেটা:
void setup() {
Serial.begin(9600); // সিরিয়াল শুরু করা
}
void loop() {
if (Serial.available() > 0) { // যদি ডেটা পাওয়া যায়
char incomingByte = Serial.read(); // ইনপুট ডেটা পড়া
Serial.print("Received: ");
Serial.println(incomingByte); // ডেটা প্রিন্ট করা
}
}
বাউড রেট হলো প্রতি সেকেন্ডে পাঠানো বা গ্রহণ করা বিটের সংখ্যা। Arduino তে সাধারণত 9600 বাউড রেট ব্যবহার করা হয়, তবে এটি 300 থেকে 115200 পর্যন্ত হতে পারে। বাউড রেট পাঠানো এবং গ্রহণের উভয় ডিভাইসে একই হতে হবে, না হলে ডেটা ত্রুটি হতে পারে।
সাধারণ বাউড রেট মান:
Serial Communication Arduino প্রোগ্রামিংয়ে বিভিন্ন ক্ষেত্রে ব্যবহার করা যায়, যেমন:
Serial Communication Arduino প্রোগ্রামিংয়ে ডেটা আদান-প্রদানের জন্য অত্যন্ত কার্যকর একটি মাধ্যম। এটি ডিভাইসের কার্যক্রম পর্যবেক্ষণ এবং ব্যবহারকারীর সঙ্গে ইন্টারঅ্যাকশন বাড়াতে সাহায্য করে।
Arduino প্রোগ্রামিংয়ে Serial Communication বোর্ড এবং কম্পিউটার বা অন্য ডিভাইসের মধ্যে ডেটা আদান-প্রদানের জন্য ব্যবহৃত হয়। এর জন্য Arduino তে সিরিয়াল লব্ধ ফাংশন রয়েছে, যেমন Serial.begin(), Serial.print(), এবং **Serial.read()**। এগুলোর মাধ্যমে বিভিন্ন ডেটা পাঠানো, গ্রহণ এবং মনিটরিং করা যায়।
Serial.begin() ফাংশনটি Arduino বোর্ড এবং কম্পিউটারের মধ্যে সিরিয়াল যোগাযোগ শুরু করার জন্য ব্যবহৃত হয়। এটি বোড রেট (baud rate) নির্ধারণ করে, যা ডেটা প্রেরণ ও গ্রহণের গতিকে নির্দেশ করে।
গঠন:
Serial.begin(baud_rate);
baud_rate
: প্রতি সেকেন্ডে কত বিট ডেটা আদান-প্রদান হবে তা নির্ধারণ করে। সাধারণত 9600 ব্যবহৃত হয়।উদাহরণ:
void setup() {
Serial.begin(9600); // সিরিয়াল কমিউনিকেশন শুরু, বোড রেট 9600
}
void loop() {
// loop() ফাংশনে কোনো কার্যক্রম না থাকলেও Serial.begin() শুধু একবার setup()-এ থাকে।
}
Serial.print() ফাংশনটি সিরিয়াল মনিটরে ডেটা প্রিন্ট করার জন্য ব্যবহৃত হয়। এটি ডেটা পাঠায় এবং একই লাইনে থাকে। Serial.println() ফাংশনটি একই কাজ করে, তবে এটি লাইন শেষ হলে কারেজ রিটার্ন করে এবং নতুন লাইন শুরু করে।
গঠন:
Serial.print(data);
Serial.println(data);
data
: যে ডেটা সিরিয়াল মনিটরে পাঠানো হবে।উদাহরণ:
void setup() {
Serial.begin(9600); // সিরিয়াল শুরু
}
void loop() {
Serial.print("Temperature: ");
Serial.println(25); // Temperature: 25 প্রিন্ট হবে
delay(1000); // প্রতি সেকেন্ডে একবার প্রিন্ট
}
Serial.read() ফাংশনটি সিরিয়াল পোর্ট থেকে ইনকামিং ডেটা পড়ার জন্য ব্যবহৃত হয়। এটি ইনপুট বাফার থেকে এক বাইট ডেটা পড়ে এবং ASCII মান রিটার্ন করে।
গঠন:
int data = Serial.read();
-1
রিটার্ন করে।উদাহরণ:
void setup() {
Serial.begin(9600); // সিরিয়াল কমিউনিকেশন শুরু
}
void loop() {
if (Serial.available() > 0) { // চেক করা হচ্ছে ইনপুট আছে কি না
int incomingByte = Serial.read(); // ডেটা পড়া হচ্ছে
Serial.print("Received: ");
Serial.println(incomingByte); // প্রাপ্ত ডেটা প্রিন্ট করা
}
}
setup()
ফাংশনে একবারই এই ফাংশন ব্যবহার করুন।Serial.println()
ব্যবহার করুন।Serial.read()
ব্যবহারের আগে Serial.available()
দিয়ে নিশ্চিত হন যে ডেটা ইনপুট বাফারে আছে।Arduino তে Serial.begin(), Serial.print(), এবং Serial.read() ফাংশনগুলো ডেটা প্রেরণ ও গ্রহণের জন্য গুরুত্বপূর্ণ। এগুলোর সঠিক ব্যবহার বোর্ড এবং কম্পিউটারের মধ্যে কার্যকর ডেটা আদান-প্রদানের সুবিধা দেয় এবং প্রোগ্রামিংয়ের কার্যক্রম পর্যবেক্ষণ ও ডিবাগিং সহজ করে।
Arduino-তে Serial Communication হলো এমন একটি প্রক্রিয়া যার মাধ্যমে Arduino বোর্ড এবং কম্পিউটারের মধ্যে ডেটা আদান-প্রদান করা হয়। এটি ডিবাগিং, সেন্সর ডেটা মনিটরিং, এবং কম্পিউটারের মাধ্যমে Arduino কন্ট্রোল করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
Arduino-তে Serial Communication চালানোর জন্য কিছু গুরুত্বপূর্ণ ফাংশন রয়েছে:
Serial.begin(baud rate)
ফাংশনটি সিরিয়াল কমিউনিকেশন শুরু করার জন্য ব্যবহৃত হয় এবং বাউড রেট নির্ধারণ করে।
উদাহরণ:
void setup() {
Serial.begin(9600); // 9600 বাউড রেটে সিরিয়াল কমিউনিকেশন শুরু করা
}
Serial.print()
এবং Serial.println()
ফাংশন ব্যবহার করে সিরিয়াল মনিটরে ডেটা প্রিন্ট করা যায়।
Serial.print()
: লাইনে ডেটা প্রিন্ট করে, কিন্তু কার্সর পরবর্তী লাইনে যায় না।Serial.println()
: ডেটা প্রিন্ট করার পরে কার্সর নতুন লাইনে যায়।উদাহরণ:
void loop() {
int sensorValue = analogRead(A0);
Serial.print("Sensor Value: ");
Serial.println(sensorValue);
delay(1000);
}
Serial.read()
ফাংশনটি সিরিয়াল পোর্ট থেকে ইনকামিং ডেটা পড়ে।
উদাহরণ:
void loop() {
if (Serial.available() > 0) {
char data = Serial.read(); // ইনকামিং ডেটা পড়া
Serial.print("Received: ");
Serial.println(data);
}
}
Arduino এবং PC এর মধ্যে Serial Communication ব্যবহার করে LED কন্ট্রোল করার একটি উদাহরণ নিচে দেওয়া হলো:
উদাহরণ:
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
char command = Serial.read();
if (command == 'H') {
digitalWrite(13, HIGH);
Serial.println("LED ON");
} else if (command == 'L') {
digitalWrite(13, LOW);
Serial.println("LED OFF");
}
}
}
Serial.begin(9600)
: সিরিয়াল কমিউনিকেশন 9600 বাউড রেটে শুরু করা হয়।Serial.available()
: চেক করে যে সিরিয়াল পোর্টে কোনো ডেটা আছে কি না।Serial.read()
: ইনকামিং ডেটা পড়ে এবং command
ভেরিয়েবলে সংরক্ষণ করে।digitalWrite()
: ইনকামিং কমান্ড অনুযায়ী LED অন বা অফ করা হয়।Arduino IDE-তে Serial Monitor ব্যবহার করে ডেটা প্রিন্ট করা এবং পাঠানো যায়।
Tools
মেনুতে যান এবং Serial Monitor
নির্বাচন করুন, অথবা কীবোর্ডে Ctrl + Shift + M
চাপুন।Serial.available()
ব্যবহার করে চেক করুন যে সিরিয়াল পোর্টে ডেটা আছে কি না।Arduino এর সাথে PC এর Serial Communication এর মাধ্যমে প্রজেক্টের কার্যক্রম পর্যবেক্ষণ এবং নিয়ন্ত্রণ করা সহজ হয়। এটি প্রোগ্রামিং এবং ডিবাগিং-এ অত্যন্ত সহায়ক এবং বিভিন্ন প্রকল্পে ডেটা আদান-প্রদান করার জন্য অপরিহার্য।
HC-05 হলো একটি জনপ্রিয় Bluetooth মডিউল যা Arduino এবং অন্যান্য মাইক্রোকন্ট্রোলার বোর্ডের সাথে সহজে ওয়্যারলেস যোগাযোগের জন্য ব্যবহৃত হয়। এটি সাধারণত দুইটি মোডে কাজ করতে পারে: Data Mode (তথ্য আদান-প্রদান) এবং AT Command Mode (কনফিগারেশন)।
HC-05 Bluetooth পিন সংযোগ:
[VCC] ----- [5V] Arduino
[GND] ----- [GND] Arduino
[TXD] ----- [Pin 0 (RX)] Arduino (Level shifter প্রয়োজন হতে পারে)
[RXD] ----- [Pin 1 (TX)] Arduino (Level shifter বা রেজিস্টর ডিভাইডার প্রয়োজন)
নোট: প্রোগ্রাম আপলোডের সময় HC-05 এর TX এবং RX সংযোগ বিচ্ছিন্ন রাখুন।
HC-05 এর মাধ্যমে Bluetooth ডেটা আদান-প্রদানের জন্য একটি সাধারণ কোড:
void setup() {
Serial.begin(9600); // সিরিয়াল কমিউনিকেশন শুরু
}
void loop() {
if (Serial.available()) { // যদি ডেটা প্রাপ্ত হয়
char data = Serial.read(); // ডেটা পড়া
Serial.print("Received: ");
Serial.println(data); // প্রাপ্ত ডেটা প্রিন্ট করা
// যদি '1' পাওয়া যায়, তাহলে LED অন করা
if (data == '1') {
digitalWrite(LED_BUILTIN, HIGH);
}
// যদি '0' পাওয়া যায়, তাহলে LED অফ করা
else if (data == '0') {
digitalWrite(LED_BUILTIN, LOW);
}
}
}
Serial.begin(9600);
: Arduino এবং HC-05 এর মধ্যে সিরিয়াল যোগাযোগের জন্য 9600 baud রেট সেট করা হয়েছে।Serial.read()
: প্রাপ্ত ডেটা পড়া হয় এবং উপযুক্ত কার্যক্রম সম্পাদন করা হয়।1234
বা 0000
হয়।AT Command Mode ব্যবহার করে HC-05 এর কনফিগারেশন পরিবর্তন করা যায়। এই মোড সক্রিয় করতে EN/KEY পিনে HIGH সিগন্যাল দিতে হবে এবং তারপর পিন কনফিগারেশন অনুযায়ী কোড পাঠাতে হবে।
AT Command উদাহরণ:
AT
AT+NAME=MyBluetooth
AT+UART=9600,0,0
HC-05 Bluetooth মডিউল ব্যবহার করে Arduino এর সাথে ওয়্যারলেস যোগাযোগ তৈরি করা সহজ এবং বহুমুখী প্রয়োগের জন্য কার্যকরী।
Arduino তে সাধারণত হার্ডওয়্যার সিরিয়াল পোর্ট (যেমন: পিন 0 এবং 1) ব্যবহার করে সিরিয়াল কমিউনিকেশন করা হয়। কিন্তু কিছু ক্ষেত্রে একাধিক সিরিয়াল ডিভাইসের সাথে যোগাযোগ করার প্রয়োজন হতে পারে। এ ক্ষেত্রে SoftwareSerial Library ব্যবহার করা হয় যা Arduino-কে একাধিক সিরিয়াল কমিউনিকেশন পোর্ট তৈরি করতে সাহায্য করে।
SoftwareSerial Library Arduino তে সফটওয়্যারের মাধ্যমে অতিরিক্ত সিরিয়াল পোর্ট তৈরি করে। এটি ব্যবহার করে নির্দিষ্ট ডিজিটাল পিনগুলোর মাধ্যমে সিরিয়াল ডেটা আদান-প্রদান করা যায়।
Arduino-তে SoftwareSerial ব্যবহার করে অতিরিক্ত সিরিয়াল পোর্ট তৈরি করার জন্য লাইব্রেরিটি প্রোগ্রামে অন্তর্ভুক্ত করতে হবে এবং দুটি ডিজিটাল পিন নির্দিষ্ট করতে হবে যেখানে সিরিয়াল ডেটা পাঠানো এবং গ্রহণ করা হবে।
কোড উদাহরণ:
#include <SoftwareSerial.h>
// SoftwareSerial পোর্ট তৈরি করা (RX, TX)
SoftwareSerial mySerial(10, 11); // পিন 10 -> RX, পিন 11 -> TX
void setup() {
// হার্ডওয়্যার সিরিয়াল শুরু করা
Serial.begin(9600);
// SoftwareSerial শুরু করা
mySerial.begin(9600);
Serial.println("SoftwareSerial Ready");
}
void loop() {
// SoftwareSerial থেকে ডেটা পড়া
if (mySerial.available()) {
char data = mySerial.read(); // ডেটা পড়া
Serial.print("Received: ");
Serial.println(data);
}
// Hardware Serial থেকে ডেটা পড়ে SoftwareSerial এ পাঠানো
if (Serial.available()) {
char data = Serial.read();
mySerial.print("Echo: ");
mySerial.println(data);
}
}
begin(speed)
: নির্দিষ্ট baud rate এ SoftwareSerial শুরু করে।available()
: কতগুলো ডেটা পড়ার জন্য উপলব্ধ আছে তা জানায়।read()
: ইনপুট থেকে একটি বাইট পড়ে।write(data)
: সিরিয়াল আউটপুটে ডেটা পাঠায়।print()
এবং println()
: সিরিয়াল আউটপুটে ডেটা প্রিন্ট করে।Bluetooth Module (HC-05) বা GPS Module-এর মতো একাধিক ডিভাইসের সাথে সিরিয়াল যোগাযোগের ক্ষেত্রে SoftwareSerial Library ব্যবহার করা হয়। উদাহরণস্বরূপ, Bluetooth Module-এর সাথে Arduino-কে সংযুক্ত করে ডেটা আদান-প্রদান করার জন্য SoftwareSerial Library ব্যবহার করা যেতে পারে।
HC-05 Bluetooth Module উদাহরণ:
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(10, 11); // RX = 10, TX = 11
void setup() {
Serial.begin(9600); // হার্ডওয়্যার সিরিয়াল শুরু
bluetooth.begin(9600); // Bluetooth সিরিয়াল শুরু
Serial.println("Bluetooth Ready");
}
void loop() {
// Bluetooth থেকে ডেটা পড়া
if (bluetooth.available()) {
char data = bluetooth.read();
Serial.print("Bluetooth Received: ");
Serial.println(data);
}
// Serial Monitor থেকে ডেটা পাঠানো
if (Serial.available()) {
char data = Serial.read();
bluetooth.write(data);
}
}
Serial.print()
ফাংশন ব্যবহার করে ডিবাগ করুন।SoftwareSerial Library Arduino প্রোজেক্টে একাধিক সিরিয়াল ডিভাইসের সাথে সংযোগ স্থাপন করতে একটি কার্যকর সমাধান। এটি সহজে ডিভাইসের মধ্যে ডেটা আদান-প্রদান করতে এবং Arduino প্রোজেক্টে নমনীয়তা আনতে সাহায্য করে।
common.read_more